using System;
using System.Collections;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;

namespace Cysharp.Threading.Tasks.Sample {
    //[AddComponentMenu("[Tool-Kid] Clock 时钟")]
    public class Clock : MonoBehaviour {
        // 用于显示计时器的文字
        public Text timerText;

        // 用于计时的计时器
        private Timer timer;

        // 记录计时器开始运行的时间
        private DateTime startTime;

        // 记录计时器目前的运行时间
        private TimeSpan elapsedTime;

        private void Start() {
            // 初始化计时器
            timer = new Timer(float.PositiveInfinity);
            timer.OnTimerTick += UpdateTimerText;

            // 开始计时器
            timer.Start();

            // 记录计时器开始运行的时间
            startTime = DateTime.Now;
        }

        // 更新计时器的文字
        private async UniTask UpdateTimerText() {
            // 计算目前的运行时间
            elapsedTime = DateTime.Now - startTime;

            // 更新计时器文字
            timerText.text = elapsedTime.ToString(@"hh\:mm\:ss");
        }

        // 停止计时器
        public void StopTimer() {
            timer.Stop();
        }
    }
}